% !TeX root = ../exam-zh-doc-basic.tex

\section{常见场景}

本章介绍实际使用中的常见需求和解决方案。

\subsection{答案控制方案}

\subsubsection{生成学生版和教师版}

最常见的需求是生成两个版本的试卷：

\textbf{学生版（默认）：}

什么都不设置，默认就是学生版，所有答案都隐藏。

\textbf{教师版：}

在文档开头添加：

\begin{latexcode}
  \examsetup{
    paren/show-paren = true,            % 显示选择题答案
    question/show-answer = true,        % 显示填空题答案
    solution/show-solution = show-stay, % 显示解答题答案
    question/show-points = true         % 显示分值（可选）
  }
\end{latexcode}

\textbf{快速切换技巧：}

用注释快速切换：

\begin{latexcode}
  % 生成学生版：注释掉下面的代码
  % 生成教师版：取消注释
  % \examsetup{
  %   paren/show-paren = true,
  %   question/show-answer = true,
  %   solution/show-solution = show-stay
  % }
\end{latexcode}

\subsubsection{解答显示位置}

解答题的答案可以在原位显示，也可以移到试卷最后：

\begin{latexcode}
  \examsetup{
    % solution/show-solution = hide,       % 隐藏（学生版）
    % solution/show-solution = show-stay,  % 原位显示（教师版）
    solution/show-solution = show-move   % 移到最后
  }
\end{latexcode}

|show-move| 模式适合制作"答案另附"的试卷。


\subsection{页面设置}

\subsubsection{纸张大小}

\begin{latexcode}
  \examsetup{
    page/size = a4paper,  % A4 纸（默认）
    % page/size = a3paper,  % A3 纸
  }
\end{latexcode}

\subsubsection{页边距调整}

使用 |geometry| 宏包调整页边距：

\begin{latexcode}[deletetexcs={\documentclass},morekeywords={\documentclass}]
  \documentclass{exam-zh}

  \usepackage{geometry}
  \geometry{
    top = 2.5cm,
    bottom = 2cm,
    left = 2cm,
    right = 2cm
  }
\end{latexcode}

\subsubsection{分栏设置}

让试卷内容分成两栏：

\begin{latexcode}
  \usepackage{multicol}

  \begin{document}
    \title{标题}
    \maketitle

    \begin{multicols}{2}  % 开始两栏
      % 题目内容...
    \end{multicols}       % 结束两栏
  \end{document}
\end{latexcode}


\subsection{图文混排详解}

本节介绍如何在试卷中实现图片与文字的混合排版。

\subsubsection{基本用法}

\textbf{使用 wrapstuff 环境：}

\begin{latexcode}
  \usepackage{wrapstuff}  % 在文档开头添加

  \begin{question}
    \begin{wrapstuff}[5]{0.3\textwidth}
      \includegraphics[width=\linewidth]{triangle.pdf}
    \end{wrapstuff}
    如图所示，已知三角形 ABC 的三边长分别为 3、4、5，
    求三角形的面积。
  \end{question}
\end{latexcode}

参数说明：
\begin{itemize}
  \item |[5]|：图片占用 5 行文字的高度（可选，自动计算）
  \item |{0.3\textwidth}|：图片宽度为文本宽度的 30\%
\end{itemize}

\subsubsection{使用 minipage 方法}

更稳定的替代方案（推荐）：

\begin{latexcode}
  \begin{question}
    \begin{minipage}[t]{0.6\textwidth}
      如图所示，已知三角形 ABC 的三边长分别为 3、4、5，
      求三角形的面积。
    \end{minipage}%
    \hfill
    \begin{minipage}[t]{0.35\textwidth}
      \centering
      \includegraphics[width=\linewidth]{triangle.pdf}
    \end{minipage}
  \end{question}
\end{latexcode}

\textbf{优点：}
\begin{itemize}
  \item 兼容性好，不会报错
  \item 精确控制布局
  \item 可以嵌套使用
\end{itemize}

\subsubsection{⚠️ 常见错误和限制}

\textbf{错误 1：在深层嵌套环境中使用 wrapstuff}

\begin{latexcode}
  % ❌ 错误示例
  \begin{problem}
    \begin{enumerate}
      \item 第一问
        \begin{enumerate}
          \item 小问(a)
            \begin{wrapstuff}  % 此处会报错
              \includegraphics{fig.png}
            \end{wrapstuff}
        \end{enumerate}
    \end{enumerate}
  \end{problem}
\end{latexcode}

\textbf{原因：}|wrapstuff| 在两层以上的 |enumerate| 嵌套中会失效（Issue \#ID3UMZ）。

\textbf{解决：}使用 |minipage| 代替，或减少嵌套层级。

\textbf{错误 2：choices 前直接使用 wrapstuff}

\begin{latexcode}
  % ❌ 错误示例
  \begin{question}
    \begin{wrapstuff}{0.3\textwidth}
      \includegraphics{fig.png}
    \end{wrapstuff}
    题目文字...
    \begin{choices}  % choices 会错位
      \item ...
    \end{choices}
  \end{question}
\end{latexcode}

\textbf{解决：}
\begin{enumerate}
  \item 图片和选项分开放置
  \item 或全部使用 |minipage| 布局
\end{enumerate}

\subsubsection{推荐的安全使用场景}

\textbf{✅ 可以安全使用 wrapstuff 的情况：}

\begin{itemize}
  \item 在 |question| 或 |problem| 环境内，无嵌套列表
  \item 纯文字题目配图片
  \item 单层 |enumerate| 内部（不推荐，但通常可用）
\end{itemize}

\textbf{⛔ 不推荐使用 wrapstuff 的情况：}

\begin{itemize}
  \item 两层及以上的 |enumerate| 或 |itemize| 嵌套
  \item |choices| 环境附近
  \item 需要精确控制布局的场合
\end{itemize}

\textbf{建议：}遇到复杂排版，优先使用 |minipage| 方法。

\subsubsection{图片位置和对齐}

\textbf{居中显示：}

\begin{latexcode}
  \begin{question}
    题目文字...

    \begin{center}
      \includegraphics[width=0.5\textwidth]{fig.png}
    \end{center}

    后续文字...
  \end{question}
\end{latexcode}

\textbf{左右并排：}

\begin{latexcode}
  \begin{minipage}[t]{0.48\textwidth}
    \includegraphics[width=\linewidth]{fig1.png}
  \end{minipage}%
  \hfill
  \begin{minipage}[t]{0.48\textwidth}
    \includegraphics[width=\linewidth]{fig2.png}
  \end{minipage}
\end{latexcode}

更多示例见完整文档的"图文排版"章节。


\subsection{行距和间距调整}

本节介绍如何调整试卷的行距和各种间距，以适应不同需求（如节约纸张）。

\subsubsection{全局行距调整}

\textbf{方法 1：使用 \textbackslash linespread}

\begin{latexcode}[deletetexcs={\documentclass},morekeywords={\documentclass}]
  \documentclass{exam-zh}

  \linespread{0.9}  % 行距缩小到 90%（默认 1.0）

  \begin{document}
    % 试卷内容...
  \end{document}
\end{latexcode}

\textbf{方法 2：使用 setspace 宏包（更精细）}

\begin{latexcode}[deletetexcs={\documentclass},morekeywords={\documentclass}]
  \documentclass{exam-zh}

  \usepackage{setspace}
  \setstretch{0.85}  % 0.85 倍行距

  % 或者使用预定义命令
  % \singlespacing    % 单倍行距
  % \onehalfspacing   % 1.5 倍行距
  % \doublespacing    % 双倍行距
\end{latexcode}

\textbf{⚠️ 注意：}
\begin{itemize}
  \item 行距不要低于 0.8，否则阅读困难
  \item 建议范围：0.85--1.2
  \item 行距过小可能导致公式重叠
\end{itemize}

\subsubsection{题目间距调整}

\textbf{调整题目之间的垂直间距：}

\begin{latexcode}
  \examsetup{
    question/sep = 0.5em,  % 题目间距（默认 1em）
  }
\end{latexcode}

\textbf{调整小题（problem）间距：}

\begin{latexcode}
  \examsetup{
    problem/sep = 1em,  % problem 环境间距
  }
\end{latexcode}

\subsubsection{选项间距调整}

\textbf{调整选择题选项的垂直间距：}

\begin{latexcode}
  \examsetup{
    choices/vsep = 0.3em,  % 选项垂直间距（默认 0.5em）
  }
\end{latexcode}

\textbf{调整选项的水平间距：}

\begin{latexcode}
  \examsetup{
    choices/hsep = 1em,  % 选项水平间距
  }
\end{latexcode}

\subsubsection{段落间距调整}

\textbf{调整段落间距：}

\begin{latexcode}[deletetexcs={\documentclass},morekeywords={\documentclass}]
  \documentclass{exam-zh}

  % 减小段落间距
  \setlength{\parskip}{0.3em}

  % 取消首行缩进（可选）
  \setlength{\parindent}{0pt}
\end{latexcode}

\subsubsection{紧凑模式示例}

\textbf{综合示例：让试卷更紧凑以节约纸张}

\begin{latexcode}[deletetexcs={\documentclass},morekeywords={\documentclass}]
  \documentclass{exam-zh}

  % === 全局行距 ===
  \usepackage{setspace}
  \setstretch{0.9}

  % === 页边距 ===
  \usepackage{geometry}
  \geometry{
    top = 2cm,
    bottom = 1.5cm,
    left = 1.8cm,
    right = 1.8cm
  }

  % === 题目和选项间距 ===
  \examsetup{
    question/sep = 0.5em,
    choices/vsep = 0.3em,
    choices/hsep = 0.8em,
  }

  % === 段落间距 ===
  \setlength{\parskip}{0.2em}

  \begin{document}
    % 试卷内容...
  \end{document}
\end{latexcode}

\textbf{效果：}
\begin{itemize}
  \item 可节约约 20--30\% 的纸张
  \item 保持基本可读性
  \item 适合练习题或非正式考试
\end{itemize}

\textbf{⚠️ 注意事项：}
\begin{itemize}
  \item 正式考试建议保持默认设置
  \item 紧凑模式可能影响阅读体验
  \item 图片密集的试卷效果不明显
\end{itemize}

\subsubsection{局部调整间距}

如果只想在某些地方调整间距：

\begin{latexcode}
  % 增加间距
  \vspace{1em}

  % 减少间距
  \vspace{-0.5em}

  % 强制分页前的弹性间距
  \vfill
\end{latexcode}

更多排版技巧见完整文档。


\subsection{特殊功能}

\subsubsection{草稿纸}

在试卷最后添加草稿纸：

\begin{latexcode}
  \newpage
  \section*{草稿纸}
  \draftpaper
\end{latexcode}

\subsubsection{方格纸}

添加方格纸（适合作文或作图题）：

\begin{latexcode}
  \squarepaper[
    rows = 20,     % 行数
    columns = 20   % 列数
  ]
\end{latexcode}

\subsubsection{评分框}

在试卷中添加评分表：

\begin{latexcode}
  \scorebox
\end{latexcode}

详细配置见完整文档。

\subsubsection{密封线}

隐藏密封线：

\begin{latexcode}
  \examsetup{
    page/show-seal-line = false
  }
\end{latexcode}

修改密封线文字：

\begin{latexcode}
  \examsetup{
    seal-line/text = {密封线内不要答题}
  }
\end{latexcode}

更多密封线设置见完整文档。


\subsection{学科专用功能}

\subsubsection{语文试卷}

\textbf{古诗排版：}

使用 |poem| 环境：

\begin{latexcode}
  \begin{poem}
    白日依山尽，\\
    黄河入海流。\\
    欲穷千里目，\\
    更上一层楼。
  \end{poem}
\end{latexcode}

\textbf{阅读材料：}

使用 |article| 环境：

\begin{latexcode}
  \begin{article}{文章标题}
    文章内容...
  \end{article}
\end{latexcode}

\subsubsection{英语试卷}

\textbf{作文答题框：}

\begin{latexcode}
  \compositionbox{
    height = 15cm  % 框的高度
  }
\end{latexcode}


\subsection{快速参考}

\textbf{常用配置速查：}

\begin{latexcode}
  \examsetup{
    % === 答案控制 ===
    paren/show-paren = true,  % 显示选择题答案
    question/show-answer = true,  % 显示填空题答案
    solution/show-solution = show-stay,  % 显示解答题答案

    % === 分值显示 ===
    question/show-points = true,  % 显示题目分值

    % === 选项排列 ===
    choices/columns = 2,  % 选项排成2列

    % === 页面设置 ===
    page/show-seal-line = false,  % 隐藏密封线
  }
\end{latexcode}

更多高级功能和详细参数，请查阅完整文档 \file{exam-zh-doc.pdf}。
